机器学习-将第三方模型转换成Core ML或自己训练模型


苹果官方提供的model功能有限,我们可以自己训练模型或者将第三方模型转化成苹果可以识别的模型。

将第三方模型转化成苹果可以识别的模型

这里以苹果给出的参考为例,也可以下载Caffee model

其中.txt文件是所有预测结果,.prototxt是模型结构文件。

打开Anaconda的spyder, 使用coremltools转换

1
2
3
4
5
6
7
8
9
coreml_model = coremltools.converters.caffe.convert(('./caffee model/bvlc_alexnet.caffemodel', 
'./caffee model/deploy.prototxt'),
predicted_feature_name='./caffee model/class_labels.txt')

coreml_model.author = "Fish News"
coreml_model.license = "BSD"
coreml_model.short_description = "this is a test description"

coreml_model.save('BVLCObjectClassifier.mlmodel')

上图的model的author、short_description、输入输出等属性可自行设置。

转换成功后会得到一个mlmodel文件,拖入工程后即可使用

自己训练模型

我们使用sklearn库内置的iris数据,或者使用自己提供的csv格式的数据进行训练

1
2
3
4
5
6
7
8
9
10
11
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
import coremltools

iris = datasets.load_iris()
model = LogisticRegression()
model.fit(iris.data,iris.target)
print iris.target_names[model.predict([ [1.0 ,2.0, 2.0, 3.0] ])]
print iris.data.shape
coreml_model = coremltools.converters.sklearn.convert(model,iris.feature_names, 'iris class')
coreml_model.save('iris.mlmodel')

训练好后会生成iris.mlmodel模型,拖入工程进行测试

测试已训练好的模型

  • 搭建UI,iris.mlmodel需要四个参数,分别是speal length,speal width,petal length,petal width

  • 结果展示

Demo下载


如有任何疑问或问题请联系我:fishnewsdream@gmail.com,欢迎交流,共同提高!

Objective-C/Swift技术开发交流群201556264,讨论何种技术并不受限,欢迎各位大牛百家争鸣!

微信公众号OldDriverWeekly,欢迎关注并提出宝贵意见

老司机iOS周报,欢迎关注或订阅

刚刚在线工作室,欢迎关注或提出建设性意见!

刚刚在线论坛, 欢迎踊跃提问或解答!

如有转载,请注明出处,谢谢!

本站总访问量 本文总阅读量